y_expand: true,
x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.CENTER });
- this.actor.add_constraint(new Layout.MonitorConstraint({ primary: true }));
+ this._currentMonitor = undefined;
+ this.setMonitor (-1);
this._box = new St.BoxLayout({ style_class: 'osd-window',
vertical: true });
this.actor.add_actor(this._box);
_monitorsChanged: function() {
/* assume 110x110 on a 640x480 display and scale from there */
- let monitor = Main.layoutManager.primaryMonitor;
+ let monitor;
+
+ if (this._currentMonitor >= 0)
+ monitor = Main.layoutManager.monitors[this._currentMonitor];
+ else
+ monitor = Main.layoutManager.primaryMonitor;
+
let scalew = monitor.width / 640.0;
let scaleh = monitor.height / 480.0;
let scale = Math.min(scalew, scaleh);
let minHeight = this._popupSize - horizontalPadding - topBorder - bottomBorder;
this._box.style = 'min-height: %dpx;'.format(Math.max(minWidth, minHeight));
+ },
+
+ setMonitor: function(index) {
+ let constraint;
+
+ if (index < 0)
+ index = -1;
+ if (this._currentMonitor == index)
+ return;
+
+ if (index < 0)
+ constraint = new Layout.MonitorConstraint({ primary: true });
+ else
+ constraint = new Layout.MonitorConstraint({ index: index });
+
+ this.actor.clear_constraints();
+ this.actor.add_constraint(constraint);
+ this._currentMonitor = index;
}
});
for (let param in params)
params[param] = params[param].deep_unpack();
+ let monitorIndex = -1;
+ if (params['monitor'])
+ monitorIndex = params['monitor'];
+
let icon = null;
if (params['icon'])
icon = Gio.Icon.new_for_string(params['icon']);
Main.osdWindow.setIcon(icon);
+ Main.osdWindow.setMonitor (monitorIndex);
Main.osdWindow.setLabel(params['label']);
Main.osdWindow.setLevel(params['level']);